<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>仅引入 JS 实现博客 CDN 加速 | 云玩家</title><meta name="keywords" content="Hexo,搭建站点"><meta name="author" content="云玩家"><meta name="copyright" content="云玩家"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="前提博客 cdn 加速网上有很多的教程, 其中免备案, 最好用的就是 Jsdelivr 了, 我也写过一篇用 Jsdelivr 加速的文章, 但是似乎很多人一开始都看不懂如何用 Jsdelivr 加速… 这篇文章的原理也是基于 Jsdelivr 加速博文图片, 但是保留了原来的相对路径. 并且能够仅引入一个 JS 实现 Jsdelivr 加速 .   本文的方法只能实现博文内图片加速, 其余页面的">
<meta property="og:type" content="article">
<meta property="og:title" content="仅引入 JS 实现博客 CDN 加速">
<meta property="og:url" content="http://yunist.cn/hexo/jsdelivr_js/index.html">
<meta property="og:site_name" content="云玩家">
<meta property="og:description" content="前提博客 cdn 加速网上有很多的教程, 其中免备案, 最好用的就是 Jsdelivr 了, 我也写过一篇用 Jsdelivr 加速的文章, 但是似乎很多人一开始都看不懂如何用 Jsdelivr 加速… 这篇文章的原理也是基于 Jsdelivr 加速博文图片, 但是保留了原来的相对路径. 并且能够仅引入一个 JS 实现 Jsdelivr 加速 .   本文的方法只能实现博文内图片加速, 其余页面的">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="http://yunist.cn/hexo/jsdelivr_js/jsdelivr_js.jpg">
<meta property="article:published_time" content="2020-04-28T14:12:32.000Z">
<meta property="article:modified_time" content="2021-08-14T04:39:34.378Z">
<meta property="article:author" content="云玩家">
<meta property="article:tag" content="Hexo">
<meta property="article:tag" content="搭建站点">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://yunist.cn/hexo/jsdelivr_js/jsdelivr_js.jpg"><link rel="shortcut icon" href="/img/favicon.ico"><link rel="canonical" href="http://yunist.cn/hexo/jsdelivr_js/"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//s4.cnzz.com"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><script async="async" data-pjax="data-pjax" src="https://s4.cnzz.com/z_stat.php?id=1278869595&amp;web_id=1278869595"></script><script>const GLOBAL_CONFIG = { 
  root: '/',
  algolia: undefined,
  localSearch: {"path":"search.xml","languages":{"hits_empty":"找不到您查询的内容：${query}"}},
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true},
  copy: {
    success: '复制成功',
    error: '复制错误',
    noSupport: '浏览器不支持'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  date_suffix: {
    just: '刚刚',
    min: '分钟前',
    hour: '小时前',
    day: '天前',
    month: '个月前'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    jQuery: 'https://cdn.jsdelivr.net/npm/jquery@latest/dist/jquery.min.js',
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/js/jquery.justifiedGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/justifiedGallery/dist/css/justifiedGallery.min.css'
    },
    fancybox: {
      js: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.js',
      css: 'https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@latest/dist/jquery.fancybox.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isanchor: false
}</script><script src="/js/yuntools.js"></script><script id="config-diff">var GLOBAL_CONFIG_SITE = { 
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2021-08-14 12:39:34'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    })(window)</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/cnyist/blog/css/font.css"><meta name="generator" content="Hexo 5.4.0"></head><body><div id="web_bg"></div><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="author-avatar"><img class="avatar-img" src="https://cdn.jsdelivr.net/gh/cnyist/blog/img/avatar.svg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="site-data"><div class="data-item is-center"><div class="data-item-link"><a href="/archives/"><div class="headline">文章</div><div class="length-num">97</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/tags/"><div class="headline">标签</div><div class="length-num">40</div></a></div></div><div class="data-item is-center"><div class="data-item-link"><a href="/categories/"><div class="headline">分类</div><div class="length-num">27</div></a></div></div></div><hr/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/chat/"><i class="fa-fw fas fa-comments"></i><span> 闲聊室</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-user"></i><span> about</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-Web"></i><span> 镜像站点</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page" target="_blank" rel="noopener" href="https://yunist.gitee.io"><i class="fa-fw iconfont icon-gitee-fill-round"></i><span> Gitee Pages</span></a></li></ul></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url('/hexo/jsdelivr_js/jsdelivr_js.jpg')"><nav id="nav"><span id="blog_name"><a id="site-name" href="/">云玩家</a></span><div id="menus"><div id="search-button"><a class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><a class="site-page" href="/archives/"><i class="fa-fw fas fa-archive"></i><span> 时间轴</span></a></div><div class="menus_item"><a class="site-page" href="/tags/"><i class="fa-fw fas fa-tags"></i><span> 标签</span></a></div><div class="menus_item"><a class="site-page" href="/categories/"><i class="fa-fw fas fa-folder-open"></i><span> 分类</span></a></div><div class="menus_item"><a class="site-page" href="/link/"><i class="fa-fw fas fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/chat/"><i class="fa-fw fas fa-comments"></i><span> 闲聊室</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-user"></i><span> about</span></a></div><div class="menus_item"><a class="site-page" href="javascript:void(0);"><i class="fa-fw iconfont icon-Web"></i><span> 镜像站点</span><i class="fas fa-chevron-down expand"></i></a><ul class="menus_item_child"><li><a class="site-page" target="_blank" rel="noopener" href="https://yunist.gitee.io"><i class="fa-fw iconfont icon-gitee-fill-round"></i><span> Gitee Pages</span></a></li></ul></div></div><div id="toggle-menu"><a class="site-page"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">仅引入 JS 实现博客 CDN 加速</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2020-04-28T14:12:32.000Z" title="发表于 2020-04-28 22:12:32">2020-04-28</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2021-08-14T04:39:34.378Z" title="更新于 2021-08-14 12:39:34">2021-08-14</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/Hexo/">Hexo</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-pv-cv"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">阅读量:</span><span id="busuanzi_value_page_pv"></span></span><span class="post-meta-separator">|</span><span class="post-meta-commentcount"><i class="far fa-comments fa-fw post-meta-icon"></i><span class="post-meta-label">评论数:</span><a href="/hexo/jsdelivr_js/#post-comment"><span id="twikoo-count"></span></a></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><h1 id="前提"><a href="#前提" class="headerlink" title="前提"></a>前提</h1><p>博客 cdn 加速网上有很多的教程, 其中免备案, 最好用的就是 Jsdelivr 了, 我也写过一篇<a href="https://yunist.cn/hexo/Hexo_blog_build/">用 Jsdelivr 加速的文章</a>, 但是似乎很多人一开始都看不懂如何用 Jsdelivr 加速… 这篇文章的原理也是基于 Jsdelivr 加速博文图片, 但是<strong>保留了原来的相对路径</strong>. 并且能够<strong>仅引入一个 JS 实现 Jsdelivr 加速</strong> . </p>
<ul>
<li><p><strong>本文的方法只能实现博文内图片加速, 其余页面的图片无法加速 (为了避免与友链图片等冲突, 并且像文章封面这种图片难以只用 JS 实现替换为 Jsdelivr 链接) .</strong></p>
</li>
<li><p><strong>本文能够成功的前提是图片在原文中用相对路径引用, 同时博客部署在 Github 上.</strong></p>
</li>
<li><p><strong>本文的方法可能和懒加载有冲突, 因此建议关闭懒加载 (实际上使用了 Jsdelivr 后加载是飞速的, 根本不需要懒加载) .</strong></p>
</li>
<li><p><strong>除 Butterfly 主题外, 其他主题的 JS 代码并没有经过严格的测试, 因此可能出现 Bug , 请及时留言.</strong></p>
</li>
<li><p><strong>由于主题版本的原因, JS 代码可能会出错或者失效, 请及时留言.</strong></p>
</li>
</ul>
<h1 id="JS-代码"><a href="#JS-代码" class="headerlink" title="JS 代码"></a>JS 代码</h1><p>为了方便小白, 这里把部分主题 JS 代码写法都写出来了 (什么? 没有你的主题? 那就留言, 我看到有时间就会加上的) .</p>
<h2 id="Butterfly"><a href="#Butterfly" class="headerlink" title="Butterfly"></a>Butterfly</h2><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> name = <span class="string">&quot;cnyist&quot;</span>;</span><br><span class="line"><span class="keyword">var</span> repository = <span class="string">&quot;blog&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(<span class="built_in">document</span>.domain != <span class="string">&#x27;localhost&#x27;</span>)&#123;</span><br><span class="line">	<span class="keyword">if</span>(<span class="built_in">document</span>.getElementById(<span class="string">&quot;post&quot;</span>))&#123;</span><br><span class="line">		<span class="keyword">for</span> (<span class="keyword">var</span> key <span class="keyword">in</span> <span class="built_in">document</span>.getElementById(<span class="string">&quot;article-container&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>))&#123;</span><br><span class="line">  			<span class="keyword">if</span> (<span class="built_in">isNaN</span>(key))&#123;</span><br><span class="line">    			<span class="keyword">break</span>;</span><br><span class="line">  			&#125;</span><br><span class="line">    		<span class="built_in">document</span>.getElementById(<span class="string">&quot;article-container&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src = <span class="built_in">document</span>.getElementById(<span class="string">&quot;article-container&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src.replace(<span class="built_in">document</span>.domain,<span class="string">&quot;cdn.jsdelivr.net/gh/&quot;</span> + name + <span class="string">&quot;/&quot;</span> + repository)</span><br><span class="line">		&#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="Matery"><a href="#Matery" class="headerlink" title="Matery"></a>Matery</h2><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> name = <span class="string">&quot;cnyist&quot;</span>;</span><br><span class="line"><span class="keyword">var</span> repository = <span class="string">&quot;blog&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(<span class="built_in">document</span>.domain != <span class="string">&#x27;localhost&#x27;</span>)&#123;</span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">var</span> key <span class="keyword">in</span> <span class="built_in">document</span>.getElementById(<span class="string">&quot;articleContent&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>))&#123;</span><br><span class="line">        <span class="keyword">if</span> (<span class="built_in">isNaN</span>(key))&#123;</span><br><span class="line">            <span class="keyword">break</span>;</span><br><span class="line">        &#125;</span><br><span class="line">    	<span class="built_in">document</span>.getElementById(<span class="string">&quot;articleContent&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src = <span class="built_in">document</span>.getElementById(<span class="string">&quot;articleContent&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src.replace(<span class="built_in">document</span>.domain,<span class="string">&quot;cdn.jsdelivr.net/gh/&quot;</span> + name + <span class="string">&quot;/&quot;</span> + repository)</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="Icarus"><a href="#Icarus" class="headerlink" title="Icarus"></a>Icarus</h2><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> name = <span class="string">&quot;cnyist&quot;</span>;</span><br><span class="line"><span class="keyword">var</span> repository = <span class="string">&quot;blog&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(<span class="built_in">document</span>.domain != <span class="string">&#x27;localhost&#x27;</span>)&#123;</span><br><span class="line">    <span class="keyword">if</span>(<span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;post-copyright&quot;</span>)[<span class="number">0</span>] || <span class="built_in">document</span>.URL == <span class="string">&quot;https://&quot;</span> + <span class="built_in">document</span>.domain + <span class="string">&#x27;/&#x27;</span>)&#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">var</span> key <span class="keyword">in</span> <span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;card-content article&quot;</span>)[<span class="number">0</span>].getElementsByTagName(<span class="string">&#x27;img&#x27;</span>))&#123;</span><br><span class="line">            <span class="keyword">if</span> (<span class="built_in">isNaN</span>(key))&#123;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            &#125;</span><br><span class="line">        <span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;card-content article&quot;</span>)[<span class="number">0</span>].getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src = <span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;card-content article&quot;</span>)[<span class="number">0</span>].getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src.replace(<span class="built_in">document</span>.domain,<span class="string">&quot;cdn.jsdelivr.net/gh/&quot;</span> + name + <span class="string">&quot;/&quot;</span> + repository)</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="Next"><a href="#Next" class="headerlink" title="Next"></a>Next</h2><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> name = <span class="string">&quot;cnyist&quot;</span>;</span><br><span class="line"><span class="keyword">var</span> repository = <span class="string">&quot;blog&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(<span class="built_in">document</span>.domain != <span class="string">&#x27;localhost&#x27;</span>)&#123;</span><br><span class="line">    <span class="keyword">for</span> (<span class="keyword">var</span> key <span class="keyword">in</span> <span class="built_in">document</span>.getElementById(<span class="string">&quot;posts&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>))&#123;</span><br><span class="line">        <span class="keyword">if</span> (<span class="built_in">isNaN</span>(key))&#123;</span><br><span class="line">            <span class="keyword">break</span>;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="built_in">document</span>.getElementById(<span class="string">&quot;posts&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src = <span class="built_in">document</span>.getElementById(<span class="string">&quot;posts&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src.replace(<span class="built_in">document</span>.domain,<span class="string">&quot;cdn.jsdelivr.net/gh/&quot;</span> + name + <span class="string">&quot;/&quot;</span> + repository)</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>

<h2 id="Volantis"><a href="#Volantis" class="headerlink" title="Volantis"></a>Volantis</h2><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> name = <span class="string">&quot;cnyist&quot;</span>;</span><br><span class="line"><span class="keyword">var</span> repository = <span class="string">&quot;blog&quot;</span>;</span><br><span class="line"><span class="keyword">if</span>(<span class="built_in">document</span>.domain != <span class="string">&#x27;localhost&#x27;</span>)&#123;</span><br><span class="line">    <span class="keyword">if</span>(<span class="built_in">document</span>.getElementById(<span class="string">&quot;post&quot;</span>))&#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">var</span> key <span class="keyword">in</span> <span class="built_in">document</span>.getElementById(<span class="string">&quot;post&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>))&#123;</span><br><span class="line">            <span class="keyword">if</span> (<span class="built_in">isNaN</span>(key))&#123;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            &#125;</span><br><span class="line">            <span class="built_in">document</span>.getElementById(<span class="string">&quot;post&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src = <span class="built_in">document</span>.getElementById(<span class="string">&quot;post&quot;</span>).getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src.replace(<span class="built_in">document</span>.domain,<span class="string">&quot;cdn.jsdelivr.net/gh/&quot;</span> + name + <span class="string">&quot;/&quot;</span> + repository)</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(<span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;post-list&quot;</span>)[<span class="number">0</span>])&#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">var</span> key <span class="keyword">in</span> <span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;post-list&quot;</span>)[<span class="number">0</span>].getElementsByTagName(<span class="string">&#x27;img&#x27;</span>))&#123;</span><br><span class="line">            <span class="keyword">if</span> (<span class="built_in">isNaN</span>(key))&#123;</span><br><span class="line">                <span class="keyword">break</span>;</span><br><span class="line">            &#125;</span><br><span class="line">            <span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;post-list&quot;</span>)[<span class="number">0</span>].getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src = <span class="built_in">document</span>.getElementsByClassName(<span class="string">&quot;post-list&quot;</span>)[<span class="number">0</span>].getElementsByTagName(<span class="string">&#x27;img&#x27;</span>)[key].src.replace(<span class="built_in">document</span>.domain,<span class="string">&quot;cdn.jsdelivr.net/gh/&quot;</span> + name + <span class="string">&quot;/&quot;</span> + repository)</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>



<h1 id="使用方式"><a href="#使用方式" class="headerlink" title="使用方式"></a>使用方式</h1><p>将 JS 代码中 <code>name</code> 变量换成你自己的 Github 用户名, <code>repository</code> 变量换成你自己的存放博客的 Github 仓库. 如果<strong>以上主题是你使用的主题</strong>, 那么改完之后就<strong>可以引入这个 JS 开始使用了 (最好放在 Html 的 body 处引用, 因为 Html 的加载是从上至下的)</strong>, 什么?! 你连引用 JS 都不会?! 好吧, 那接下来说得再详细一点.</p>
<p>首先根据你的主题, 将对应的 JS 代码保存为 <code>jsdelivr.js</code> 文件保存在<strong>主题的</strong> <code>source/js</code> 文件夹. 如果你的主题支持 <code>_config.yml</code> 中添加 JS 代码 (进入你的主题搜索 JS 关键字可能就可以搜到, 比如 Butterfly 就支持)</p>
<p><img src="1.png" alt="Butterfly _conifg.yml"></p>
<p>那就直接加 <code>/jsdelivr.js</code> 上去就好了 (为什么我这里写的是 <code>/js/jsdelivr.js</code> ? 因为我把这个 JS 放在 <code>source</code> 文件夹下的 <code>js</code> 文件夹里了, 鉴于某些主题可能没有该文件夹, 因此放在 <code>source</code> 文件夹并且写 <code>/jsdeliv.js</code> 是最保险的) .</p>
<p>当然部分主题的添加 JS 代码的方式可能不同, 有些是添加链接就好 (比如上面的例子), 有些是要写标签 (比如新版 Butterfly), 如果是写标签的话. 就将 <code>&lt;script src=&quot;/jsdelivr.js&quot;&gt;&lt;/script&gt;</code> 写进去就好了 (注意 yml 文件语法) .</p>
<p>如果都没有, 那就需要更改源文件了.</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;script src&#x3D;&quot;&#x2F;jsdelivr.js&quot;&gt;&lt;&#x2F;script&gt;</span><br></pre></td></tr></table></figure>

<p>将以上代码放入 ejs 源文件的 body 标签里 (就是被 <code>&lt;body&gt;</code> 和 <code>&lt;/body&gt;</code> 包围的区域, 你可以查找关键字 <code>&lt;body&gt;</code> 然后将以上代码放到这个标签的下面).</p>
<p>**如果以上 js 代码没有你的主题, 你又不好意思留言 (或者不想等太久) , 那么就需要你自己更改以上 js 代码.**以 Butterfly 主题的 js 代码为例, 将 <code>article-container</code> 改成你自己主题的文章内容的 Html 标签 id , 而 <code>post</code> 改成你自己主题 Post 文章特有的 id (就是说这个 id page 是没有的, 用于判断该页是 Post 还是 Page) .</p>
</article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta">文章作者: </span><span class="post-copyright-info"><a href="mailto:undefined">云玩家</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta">文章链接: </span><span class="post-copyright-info"><a href="http://yunist.cn/hexo/jsdelivr_js/">http://yunist.cn/hexo/jsdelivr_js/</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta">版权声明: </span><span class="post-copyright-info">本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来自 <a href="http://yunist.cn" target="_blank">云玩家</a>！</span></div></div><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/Hexo/">Hexo</a><a class="post-meta__tags" href="/tags/%E6%90%AD%E5%BB%BA%E7%AB%99%E7%82%B9/">搭建站点</a></div><div class="post_share"><div class="social-share" data-image="/hexo/jsdelivr_js/jsdelivr_js.jpg" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/social-share.js/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/social-share.js/dist/js/social-share.min.js" defer></script></div></div><nav class="pagination-post" id="pagination"><div class="prev-post pull-left"><!-- - var pagination_cover = prev.cover === false ? prev.randomcover : prev.cover--><a href="/ML/RL/primer/basic_concepts/"><img class="prev-cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/ML/RL/primer/basic_concepts/basic_concepts.jpg" onerror="onerror=null;src='/img/404.jpg'" alt="cover of previous post"><div class="pagination-info"><div class="label">上一篇</div><div class="prev_info">RL 基本概念</div></div></a></div><!-- - var pagination_cover = next.cover == false ? next.randomcover : next.cover--><div class="next-post pull-right"><a href="/ML/RL/primer/RL_demo/"><img class="next-cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/ML/RL/primer/RL_demo/RL_demo.png" onerror="onerror=null;src='/img/404.jpg'" alt="cover of next post"><div class="pagination-info"><div class="label">下一篇</div><div class="next_info">强化学习入门 Demo</div></div></a></div></nav><div class="relatedPosts"><div class="headline"><i class="fas fa-thumbs-up fa-fw"></i><span> 相关推荐</span></div><div class="relatedPosts-list"><div><a href="/hexo/Valine_reply/" title="Valine 评论回复发送重置密码邮件"><img class="cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/hexo/Valine_reply/Valine_reply.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2020-04-09</div><div class="title">Valine 评论回复发送重置密码邮件</div></div></a></div><div><a href="/hexo/back_blog_up/" title="手把手教你将博客备份到 Github"><img class="cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/hexo/back_blog_up/back_blog_up.png" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2020-04-10</div><div class="title">手把手教你将博客备份到 Github</div></div></a></div><div><a href="/hexo/butterfly_modify/" title="Butterfly 主题魔改记录"><img class="cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/hexo/butterfly_modify/butterfly_modify.jpeg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2020-04-13</div><div class="title">Butterfly 主题魔改记录</div></div></a></div><div><a href="/hexo/hexo_d_github_problem/" title="hexo d 命令后 github 无法更新问题"><img class="cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/hexo/hexo_d_github_problem/hexo_d_github_problem.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2020-04-04</div><div class="title">hexo d 命令后 github 无法更新问题</div></div></a></div><div><a href="/hexo/hexo_modify_theme_butterfly/" title="Hexo modify theme butterfly"><img class="cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/hexo/hexo_modify_theme_butterfly/hexo_modify_theme_butterfly.svg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2020-05-05</div><div class="title">Hexo modify theme butterfly</div></div></a></div><div><a href="/hexo/local_search_speed_up/" title="解决 Hexo 本地搜索 search.xml 文件加载过慢"><img class="cover" src="https://cdn.jsdelivr.net/gh/cnyist/blog/hexo/local_search_speed_up/local_search_speed_up.jpg" alt="cover"><div class="content is-center"><div class="date"><i class="far fa-calendar-alt fa-fw"></i> 2020-04-17</div><div class="title">解决 Hexo 本地搜索 search.xml 文件加载过慢</div></div></a></div></div></div><hr/><div id="post-comment"><div class="comment-head"><div class="comment-headline"><i class="fas fa-comments fa-fw"></i><span> 评论</span></div></div><div class="comment-wrap"><div><div id="twikoo-wrap"></div></div></div></div></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="card-info-avatar is-center"><img class="avatar-img" src="https://cdn.jsdelivr.net/gh/cnyist/blog/img/avatar.svg" onerror="this.onerror=null;this.src='/img/friend_404.gif'" alt="avatar"/><div class="author-info__name">云玩家</div><div class="author-info__description">云玩家's blog</div></div><div class="card-info-data"><div class="card-info-data-item is-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">97</div></a></div><div class="card-info-data-item is-center"><a href="/tags/"><div class="headline">标签</div><div class="length-num">40</div></a></div><div class="card-info-data-item is-center"><a href="/categories/"><div class="headline">分类</div><div class="length-num">27</div></a></div></div><a class="button--animated" id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/xxxxxx"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="https://github.com/cnyist" target="_blank" title="Github"><i class="fab fa-github"></i></a><a class="social-icon" href="https://blog.csdn.net/chnyist" target="_blank" title="CSDN"><i class="fas iconfont icon-CN_csdnnet"></i></a><a class="social-icon" href="https://www.zhihu.com/people/cnyist" target="_blank" title="知乎"><i class="fas iconfont icon-zhihu"></i></a><a class="social-icon" href="mailto:yunist@qq.com" target="_blank" title="Email"><i class="fas fa-envelope"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn card-announcement-animation"></i><span>公告</span></div><div class="announcement_content">This is my Blog</div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%89%8D%E6%8F%90"><span class="toc-number">1.</span> <span class="toc-text">前提</span></a></li><li class="toc-item toc-level-1"><a class="toc-link" href="#JS-%E4%BB%A3%E7%A0%81"><span class="toc-number">2.</span> <span class="toc-text">JS 代码</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#Butterfly"><span class="toc-number">2.1.</span> <span class="toc-text">Butterfly</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Matery"><span class="toc-number">2.2.</span> <span class="toc-text">Matery</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Icarus"><span class="toc-number">2.3.</span> <span class="toc-text">Icarus</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Next"><span class="toc-number">2.4.</span> <span class="toc-text">Next</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Volantis"><span class="toc-number">2.5.</span> <span class="toc-text">Volantis</span></a></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F"><span class="toc-number">3.</span> <span class="toc-text">使用方式</span></a></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><!-- - let post_cover = article.cover--><div class="aside-list-item"><a class="thumbnail" href="/math/set_theory/unique_ordinal/" title="序数的唯一性"><img src="https://cdn.jsdelivr.net/gh/cnyist/blog/math/set_theory/unique_ordinal/unique_ordinal.png" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="序数的唯一性"/></a><div class="content"><a class="title" href="/math/set_theory/unique_ordinal/" title="序数的唯一性">序数的唯一性</a><time datetime="2022-01-12T08:26:12.000Z" title="发表于 2022-01-12 16:26:12">2022-01-12</time></div></div><!-- - let post_cover = article.cover--><div class="aside-list-item"><a class="thumbnail" href="/math/mathematical_analysis/mathematical_analysis_practice/3/3-1/" title="(史济怀) 数学分析教程上册第 3 版-练习题 3.1"><img src="https://cdn.jsdelivr.net/gh/cnyist/blog/math/mathematical_analysis/mathematical_analysis_practice/3/3-1/math.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="(史济怀) 数学分析教程上册第 3 版-练习题 3.1"/></a><div class="content"><a class="title" href="/math/mathematical_analysis/mathematical_analysis_practice/3/3-1/" title="(史济怀) 数学分析教程上册第 3 版-练习题 3.1">(史济怀) 数学分析教程上册第 3 版-练习题 3.1</a><time datetime="2021-10-19T00:30:55.000Z" title="发表于 2021-10-19 08:30:55">2021-10-19</time></div></div><!-- - let post_cover = article.cover--><div class="aside-list-item"><a class="thumbnail" href="/math/mathematical_analysis/mathematical_analysis_practice/2/2-11/" title="(史济怀) 数学分析教程上册第 3 版-练习题 2.11"><img src="https://cdn.jsdelivr.net/gh/cnyist/blog/math/mathematical_analysis/mathematical_analysis_practice/2/2-11/2-11.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="(史济怀) 数学分析教程上册第 3 版-练习题 2.11"/></a><div class="content"><a class="title" href="/math/mathematical_analysis/mathematical_analysis_practice/2/2-11/" title="(史济怀) 数学分析教程上册第 3 版-练习题 2.11">(史济怀) 数学分析教程上册第 3 版-练习题 2.11</a><time datetime="2021-09-25T03:37:28.000Z" title="发表于 2021-09-25 11:37:28">2021-09-25</time></div></div><!-- - let post_cover = article.cover--><div class="aside-list-item"><a class="thumbnail" href="/math/mathematical_analysis/mathematical_analysis_practice/2/2-10/" title="(史济怀) 数学分析教程上册第 3 版-练习题 2.10"><img src="https://cdn.jsdelivr.net/gh/cnyist/blog/math/mathematical_analysis/mathematical_analysis_practice/2/2-10/2-10.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="(史济怀) 数学分析教程上册第 3 版-练习题 2.10"/></a><div class="content"><a class="title" href="/math/mathematical_analysis/mathematical_analysis_practice/2/2-10/" title="(史济怀) 数学分析教程上册第 3 版-练习题 2.10">(史济怀) 数学分析教程上册第 3 版-练习题 2.10</a><time datetime="2021-09-22T07:36:49.000Z" title="发表于 2021-09-22 15:36:49">2021-09-22</time></div></div><!-- - let post_cover = article.cover--><div class="aside-list-item"><a class="thumbnail" href="/math/mathematical_analysis/mathematical_analysis_practice/2/2-9/" title="(史济怀) 数学分析教程上册第 3 版-练习题 2.9"><img src="https://cdn.jsdelivr.net/gh/cnyist/blog/math/mathematical_analysis/mathematical_analysis_practice/2/2-9/2-9.jpeg" onerror="this.onerror=null;this.src='/img/404.jpg'" alt="(史济怀) 数学分析教程上册第 3 版-练习题 2.9"/></a><div class="content"><a class="title" href="/math/mathematical_analysis/mathematical_analysis_practice/2/2-9/" title="(史济怀) 数学分析教程上册第 3 版-练习题 2.9">(史济怀) 数学分析教程上册第 3 版-练习题 2.9</a><time datetime="2021-09-20T08:19:06.000Z" title="发表于 2021-09-20 16:19:06">2021-09-20</time></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2022 By 云玩家</div><div class="framework-info"><span>框架 </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer><script>document.getElementById('web_bg').style = 'background-image: url("' + get_rand_jsd_pic('cnyist', 'banner@master', '/', 70, '-min.jpg') + '")'</script></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="浅色和深色模式转换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><a id="to_comment" href="#post-comment" title="直达评论"><i class="fas fa-comments"></i></a><button id="go-up" type="button" title="回到顶部"><i class="fas fa-arrow-up"></i></button></div></div><div id="local-search"><div class="search-dialog"><div class="search-dialog__title" id="local-search-title">本地搜索</div><div id="local-input-panel"><div id="local-search-input"><div class="local-search-box"><input class="local-search-box--input" placeholder="搜索文章" type="text"/></div></div></div><hr/><div id="local-search-results"></div><span class="search-close-button"><i class="fas fa-times"></i></span></div><div id="search-mask"></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="/js/search/local-search.js"></script><div class="js-pjax"><script>(()=>{
  const $countDom = document.getElementById('twikoo-count')
  const init = () => {
    let initData = {
      el: '#twikoo-wrap',
      envId: 'yunist-147dfe',
      region: ''
    }

    if (false) {
      const otherData = false
      initData = Object.assign(initData, otherData)
    }
    
    twikoo.init(initData)
  }

  const getCount = () => {
    twikoo.getCommentsCount({
      envId: 'yunist-147dfe',
      region: '',
      urls: [window.location.pathname],
      includeReply: false
    }).then(function (res) {
      $countDom.innerText = res[0].count
    }).catch(function (err) {
      console.error(err);
    });
  }

  const loadTwikoo = (bool = false) => {
    if (typeof twikoo === 'object') {
      init()
      bool && $countDom && setTimeout(getCount,0)
    } else {
      getScript('https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js').then(()=> {
        init()
        bool && $countDom && setTimeout(getCount,0)
      })
    }
  }

  if ('Twikoo' === 'Twikoo' || !false) {
    if (false) btf.loadComment(document.getElementById('twikoo-wrap'), loadTwikoo)
    else loadTwikoo(true)
  } else {
    window.loadOtherComment = () => {
      loadTwikoo()
    }
  }
})()</script></div><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>